Q: GetDataBrowserUserState ÇégǡǃÅADataBrowser ÉRÉìÉgÉçÅ[ÉãÇÃÉÜÅ[ÉUÇÃèÛë‘ÇÉfÉBÉXÉNÇ…èëÇ´èoÇπÇÈÇÊǧDžǵǃǢNjÇ∑ÅBÅiÉÜÅ[ÉUÇÃèÛë‘ÇΔÇÕÅAÉJÉâÉÄÇÃïùÇ‚èáèòǻǫÅAÉRÉìÉgÉçÅ[Éãì‡Ç≈ÉÜÅ[ÉUÇ™ÉJÉXÉ^É}ÉCÉYÇ≈Ç´ÇÈê›íËDžǬǢǃÇÃèÓïÒÇÃDZÇΔÇ≈Ç∑ÅjÅBGetDataBrowserUserState Ç…ÇÊǡǃï‘Ç≥ÇÍÇΩ CFDataRef Ç…ëŒÇµÇƒ CFDataGetLength ÇåƒÇ—èoǪǧÇΔÇΔǵNjǵÇΩÇ™ÅAMac OS X Ç≈ÇÕ "EXC_BAD_ACCESS" Ç≈ÉNÉâÉbÉVÉÖǵǃǵNjǢNjǵÇΩÅBâΩÇ™ä‘à·Ç¡ÇƒÇ¢ÇÈÇÃÇ≈ǵÇÂǧǩÅH A: écîOǻǙÇÁÅAGetDataBrowserUserState ÇÃÉvÉçÉgÉ^ÉCÉvÇ™ÅiMac OS X 10.2.x Ç®ÇÊǗǪÇÍà»ëOÇ≈ÇÕÅjê≥ǵÇ≠ǻǢÇΩÇflÅA GetDataBrowserUserState ÇÕ CFDataRef Çï‘Ç≥Ç∏ÅACFDictionaryRef Çï‘ǵNjÇ∑ÅB
CFPropertyListyCreateXMLData Çégǡǃ CFDictionaryRef Ç CFDataRef Ç…ïœä∑Ç≈Ç´ÇÈÇÃÇ≈ÅAåãâ Ç…ëŒÇµÇƒ CFDataGetLength ÇåƒÇ—èoÇπÇ‹Ç∑ÅB
à»â∫Ç…ó·Çé¶ÇµÇ‹Ç∑ÅB
ÉäÉXÉg 1.
|
CFDataRef state = NULL;
OSStatus err;
ControlRef browser = GetDataBrowserFromWindow(window);
err = GetDataBrowserUserState(browser, &state);
// èÛë‘Çà CFType Ç™ñ{ìñÇ… CFDictionaryRef ǩǫǧǩÇämîF
if ((noErr == err) && (CFGetTypeID(state) == CFDictionaryGetTypeID()))
{
CFDataRef temp = NULL;
CFIndex index;
if (state != NULL) // ó\ñhë[íuìIÇ» CoreFoundation ÉGÉâÅ[É`ÉFÉbÉN
{
temp = CFPropertyListCreateXMLData(NULL, (CFPropertyListRef)state);
if (temp != NULL) // ó\ñhë[íuìIÇ» CoreFoundation ÉGÉâÅ[É`ÉFÉbÉN
{
index = CFDataGetLength(temp); // ÉoÉCÉgíPà Ç…ÇÊÇÈí∑Ç≥
CFRelease(temp); // çÏê¨ÇµÇΩÇÁÅAâï˙Ç∑ÇÈïKóvǙdžÇÈ
}
}
}
// HIToolbox ÇÃãKë•Ç≈ÇÕÅAñºëOÇ… "Copy" Ç© "Create" ÇÃïtÇ≠
// API Ç≈éÊìæÇµÇΩéQèΔÇâï˙Ç∑ÇÈÇ™ÅADataBrowser API ÇÕDZÇÃãKë•ÇÃì±ì¸ëOÇ…çÏê¨Ç≥ÇÍǃǢÇÈÅB
// GetDataBrowserUserState Ç…ÇÊǡǃï‘Ç≥ÇÍÇÈçÄñ⁄ÇÕÅA
// âï˙Ç∑ÇÈïKóvǙdžÇÈ
CFRelease(state);
|
[2003 îN 7 åé 22 ì˙]
|